#include<iostream>
#include<future>
#include<memory>

//执行的异步任务
int Add(int a,int b)
{
    return a+b;
}

int main()
{
    //该类没有赋值拷贝
    auto task=std::make_shared<std::packaged_task<int(int,int)>>(Add);
    //获取任务关联的对象
    std::future<int> res=task->get_future();
    // 3. 在另一个线程执行任务
    std::thread thr([task](){
        (*task)(11,22);
    });
    std::cout<<res.get()<<std::endl;
    //等待线程，在退出
    thr.join();
    return 0;
}